59 - 6.1.7 Prozesse: Implementierungsaspekte [ID:16693]
50 von 219 angezeigt

Kommen wir nun auf ein paar wichtige Implementierungsaspekte im Zusammenhang mit Prozessen zu sprechen.

Hier zunächst mal einfach den Unterschied zwischen Prozess und Faden.

Das sind ja zwei Begrifflichkeiten, die immer wieder verwendet werden, wo sich dann die Frage stellt,

wo unterscheiden sich denn diese Begriffe letztendlich.

Da gibt es erstmal die Gemeinsamkeit, dass man nämlich einen gewissen Vorgang hier zum Ausdruck bringt,

einen Programmablauf. In beiden Fällen gilt es, dass man Programmabläufe mit Prozess oder mit Faden zum Ausdruck bringt.

Die Unterschiede ergeben sich dann letztendlich in der konkreten technischen Auslegung,

wo man dann sagen würde, Prozess ist etwas anderes als Faden oder umgekehrt.

Ein Prozess ist ursprünglich als Ausführung eines Programms Locus of Control begriffen worden

und wird es eben durchaus heute noch so. Aber eben seit Multics, dem, sage mal, wenn man so will,

Vater von Unix, ist so ein Prozess eben auch noch zusätzlich mit einem eigenen, isolierten, geschützten Adressraum letztendlich verknüpft.

Und so kommt man heute häufig dazu zu sagen, Prozesse sind eben immer Dinge, Programme in Ausführung,

wo denn eben ein geschützter Adressraum existiert. Das muss überhaupt nicht sein.

Schaut man sich andere Betriebssysteme an, kriegt man hier ein anderes Verständnis.

Zum Beispiel das SOS-Betriebssystem, zeitlich unwesentlich nach Multics letztendlich entstanden,

hat den Teambegriff eingeführt und damit hat man ein Team von Prozessengemeinde,

die sich denselben geschützten Adressraum teilen. Also genau was anderes als das, was man seit Multics oder Unix,

wenn man so will, kennt, hängt also von dem Prozess oder wenn man so von dem Betriebssystem oder von dem abstrakten Prozess ab.

Was man denn wirklich mit dem Begriff Prozess denn hier meinen würde? Der Faden wäre jetzt innerhalb eines solchen Prozesses eben ein konkreter Strang.

Der rote Faden in einem Programm. Im Sinne von SOS wäre es genau der sequenzielle Prozess.

Ein SOS-Team besteht aus mehreren Prozessen letztendlich, wo denn jeder dieser Prozesse ein sequenzieller Prozess ist.

Als solcher wird er auch dann wirklich in dem SOS-Betriebssystem dann wirklich bezeichnet,

wobei es bei Multics durchaus so sein könnte oder wenn man heutige Unix-Systemen betrachtet,

dass denn so ein Prozess überhaupt nicht mehr sequenziell sein muss, sondern sehr wohl als nicht sequenzielle Entität gelten muss.

Es gibt weitere Begrifflichkeiten. Aufgabe, also Task, Arbeit, Job.

Damit beschreibt man so Handlungen. Das ist auch ein Prozess. Prozesse sind auch nichts anderes als Handlungen, die zum Ausdruck gebracht werden.

Oder wenn man mehr auf sowas wie eine Gewichtsklasse ähnlich wie einen Faden abzielt,

dann kennt man heute die Begriffe Faser oder Fässerchen, also Fiber und Fiber.

Letztendlich die dann besonders leichtgewichtige Fäden darstellen sollen.

Nun ist die Frage, was hier im Vordergrund der Diskussion eigentlich steht, nämlich was,

also ob es hier darum geht, einen Programmablauf zu bezeichnen oder man eben auch noch gleich dazu sagen möchte

oder muss, in welcher Art und Weise denn die Isolation für solch einen Programmablauf geschieht.

Hat man überhaupt eine Isolation? Also schützt man sozusagen Prozesse vor anderen Prozesse im selben Adressraum?

Im selben Speicher? Oder tut man das halt eigentlich nicht?

Das ist der entscheidende Punkt. Sowas wie Separation of Concern ist hier durchaus wichtig anzuwenden.

Es ist wichtig, den Kontext zu betrachten, wenn es dann darum geht, von Prozessen oder von Fäden jeweils zu sprechen.

Nun, leider ist es so, dass praktisch diese Begrifflichkeiten Ablauf und Schutz, also Programmablauf einerseits,

Adressraum Schutz andererseits eben vermischt werden. Also wenn man denn sowas wie Multics Prozess versteht,

der Begriff verknüpft dann eben beide Sachen. Man muss einfach erkennen und feststellen,

dass sich ein Prozess, unabhängig davon, wie der nun isoliert stattfindet oder nicht,

sich immer in einem bestimmten Adressraum befindet. Und dieser Adressraum wird durch nichts anderes definiert

als durch das Programm, das diesen Prozess eben definiert. Also die Unterprogramme, die dort in diesem Programm existieren,

die Daten, die Variablen, die man da halt hat, die werden alle referenziert. Es gibt Referenzfolgen,

die hatten wir einleitend schon mal behandelt, diese Begrifflichkeit und letztendlich diese Menge von Adressen,

die dann bei der Ausführung eines Programms entstehen, die definieren den Adressraum.

Nun kann man hingehen und diesen Adressraum, einen Prozess in seinen Adressraum physisch isolieren,

indem man durch spezielle Schutzmaßnahmen dafür Sorge trägt, dass ein anderer Prozess nicht zu Schaden kommt,

wenn Prozesse möglicherweise illegale Adressen generieren, was sie ja machen könnten aufgrund von Programmierfehler

oder bewusst aufgrund von Schadsoftware letztendlich in den Programmen durchführen könnten.

Aber es ist eben so, dass praktisch dieser Adressraum, der für den Prozess definiert ist,

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

00:25:25 Min

Aufnahmedatum

2020-05-27

Hochgeladen am

2020-05-27 15:36:33

Sprache

de-DE

Tags

module programmstruktur Variablen Datentypen Preprozessor Gültigkeit
Einbetten
Wordpress FAU Plugin
iFrame
Teilen